WORST_CASE(?,O(n^2)) Solution: --------- "#0" :: [] -(0)-> "A"(0, 0) "#and" :: ["A"(0, 0) x "A"(0, 0)] -(0)-> "A"(0, 1) "#eq" :: ["A"(0, 0) x "A"(0, 0)] -(0)-> "A"(0, 0) "#equal" :: ["A"(0, 0) x "A"(0, 0)] -(1)-> "A"(0, 0) "#false" :: [] -(0)-> "A"(0, 0) "#false" :: [] -(0)-> "A"(0, 1) "#neg" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "#pos" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "#s" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "#true" :: [] -(0)-> "A"(0, 0) "#true" :: [] -(0)-> "A"(0, 1) "::" :: ["A"(0, 0) x "A"(0, 0)] -(0)-> "A"(0, 0) "::" :: ["A"(5, 0) x "A"(5, 0)] -(5)-> "A"(5, 0) "::" :: ["A"(7, 6) x "A"(13, 6)] -(7)-> "A"(7, 6) "::" :: ["A"(13, 6) x "A"(19, 6)] -(13)-> "A"(13, 6) "and" :: ["A"(0, 0) x "A"(0, 0)] -(1)-> "A"(0, 1) "eq" :: ["A"(0, 0) x "A"(5, 0)] -(3)-> "A"(0, 1) "eq#1" :: ["A"(0, 0) x "A"(5, 0)] -(2)-> "A"(0, 1) "eq#2" :: ["A"(0, 0)] -(1)-> "A"(0, 1) "eq#3" :: ["A"(5, 0) x "A"(0, 0) x "A"(0, 0)] -(1)-> "A"(0, 1) "nil" :: [] -(0)-> "A"(0, 0) "nil" :: [] -(0)-> "A"(5, 0) "nil" :: [] -(0)-> "A"(7, 6) "nil" :: [] -(0)-> "A"(13, 6) "nub" :: ["A"(7, 6)] -(2)-> "A"(0, 0) "nub#1" :: ["A"(7, 6)] -(1)-> "A"(0, 0) "remove" :: ["A"(0, 0) x "A"(13, 6)] -(2)-> "A"(7, 6) "remove#1" :: ["A"(13, 6) x "A"(0, 0)] -(1)-> "A"(7, 6) "remove#2" :: ["A"(0, 0) x "A"(0, 0) x "A"(8, 6) x "A"(19, 6)] -(10)-> "A"(7, 6) Cost Free Signatures: --------------------- "#0" :: [] -(0)-> "A"_cf(0, 0) "#and" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#and" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "#eq" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#equal" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#false" :: [] -(0)-> "A"_cf(0, 0) "#false" :: [] -(0)-> "A"_cf(0, 1) "#neg" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#pos" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "#true" :: [] -(0)-> "A"_cf(0, 0) "#true" :: [] -(0)-> "A"_cf(0, 1) "::" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "::" :: ["A"_cf(6, 0) x "A"_cf(6, 0)] -(6)-> "A"_cf(6, 0) "and" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "and" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "eq" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "eq" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "eq#1" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "eq#1" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "eq#2" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "eq#2" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "eq#3" :: ["A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "eq#3" :: ["A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "nil" :: [] -(0)-> "A"_cf(0, 0) "nil" :: [] -(0)-> "A"_cf(6, 0) "nub" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "nub#1" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove" :: ["A"_cf(0, 0) x "A"_cf(6, 0)] -(0)-> "A"_cf(6, 0) "remove" :: ["A"_cf(0, 0) x "A"_cf(6, 0)] -(0)-> "A"_cf(0, 0) "remove#1" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove#1" :: ["A"_cf(6, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(6, 0) "remove#1" :: ["A"_cf(6, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove#2" :: ["A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove#2" :: ["A"_cf(0, 1) x "A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "remove#2" :: ["A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(6, 0) x "A"_cf(6, 0)] -(6)-> "A"_cf(6, 0) "remove#2" :: ["A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(0, 0) x "A"_cf(6, 0)] -(0)-> "A"_cf(0, 0) Base Constructors: ------------------ "\"#0\"_A" :: [] -(0)-> "A"(1, 0) "\"#0\"_A" :: [] -(0)-> "A"(0, 1) "\"#false\"_A" :: [] -(1)-> "A"(1, 0) "\"#false\"_A" :: [] -(0)-> "A"(0, 1) "\"#neg\"_A" :: ["A"(1, 0)] -(0)-> "A"(1, 0) "\"#neg\"_A" :: ["A"(1, 1)] -(1)-> "A"(0, 1) "\"#pos\"_A" :: ["A"(1, 0)] -(1)-> "A"(1, 0) "\"#pos\"_A" :: ["A"(1, 1)] -(1)-> "A"(0, 1) "\"#s\"_A" :: ["A"(1, 0)] -(1)-> "A"(1, 0) "\"#s\"_A" :: ["A"(1, 1)] -(1)-> "A"(0, 1) "\"#true\"_A" :: [] -(1)-> "A"(1, 0) "\"#true\"_A" :: [] -(0)-> "A"(0, 1) "\"::\"_A" :: ["A"(1, 0) x "A"(1, 0)] -(1)-> "A"(1, 0) "\"::\"_A" :: ["A"(0, 1) x "A"(1, 1)] -(0)-> "A"(0, 1) "\"nil\"_A" :: [] -(0)-> "A"(1, 0) "\"nil\"_A" :: [] -(0)-> "A"(0, 1)